package com.vecspace.httpclient;

import java.util.Map;


/**发送http请求，并获得正常返回的内容，非正常返回内容的情况下抛出异常
 * 采用UTF-8的默认编码
 * @author: wanghua
 */
public class THttpClient {

	/** 一：连接超时：connectionTimeout 指的是连接一个url的连接等待时间。测试的时候，将url改为一个不存在的url：“http://test.com”超时时间3000ms过后，系统报出异常。
	 *  二：读取数据超时：soTimeout 指的是连接上一个url，获取response的返回等待时间
	 */
	 
	//private int connectionRequestTimeout = 10 * 1000; //指的是连接一个url的连接等待时间。测试url是否存在
	//private int connectTimeout = 30 * 1000;
	private int socketTimeout = 3 * 60 * 1000; //读取数据超时,指的是连接上一个url，获取response的返回等待时间
	
	public String get(String httpUrl) throws Exception{
		return get(httpUrl, "UTF-8");
	}
	
	public String get(String url , String charset) throws Exception{
		TSessionHttpClient httpClient = new TSessionHttpClient();
		try{
			return httpClient.get(url, charset);
		}finally{
			httpClient.close();
		}
	}

	public String post(String url) throws Exception{
		return post(url, null, "UTF-8");
	}
	
	public String post(String url,Map<String,Object> parameters) throws Exception{
		return post(url, parameters, "UTF-8");
	}
	
	public String post(String url,Map<String,Object> parameters, String charset) throws Exception{		
		TSessionHttpClient httpClient = new TSessionHttpClient();
		try{
			return httpClient.post(url, parameters, charset);
		}finally{
			httpClient.close();
		}
	}
	/**
	 * 
	 * @param wsurl webservice地址
	 * @param soapRequestData 请求数据（soap文本）
	 * @param mimeType 默认为 text/xml
	 * @param charset 字符集
	 * @return
	 * @throws Exception 
	 * @author: wanghua
	 */
	public static String postWSSoap(String wsurl, String soapRequestData, String mimeType, String charset) throws Exception{
		TSessionHttpClient httpClient = new TSessionHttpClient();
		try{
			return httpClient.postWSSoap(wsurl, soapRequestData, mimeType, charset);
		}finally{
			httpClient.close();
		}
	}
	
	public void close(){
		
	}
	
	/**读取数据超时,指的是连接上一个url，获取response的返回等待时间 毫秒*/
	public int getSocketTimeout() {
		return socketTimeout;
	}

	/**读取数据超时,指的是连接上一个url，获取response的返回等待时间 毫秒*/
	public void setSocketTimeout(int socketTimeout) {
		this.socketTimeout = socketTimeout;
	}
	
	
}
